/**
 * 实现单例模式的两种方法：
 * 1）将类的构造方法私有化，用一个私有的类变量instance保存类的实例，
 *   在加载类时，创建类的实例，并将实例付给instance；再提供一个公有
 *   的静态方法个体Instance()，用于获取类的唯一实例并返回instance。
 * 2）将类的构造方法私有化，用一个私有的类变量instance保存类的实例
 *   在加载类时，将null赋给instance；再提供一个公有的静态方法getInstance,
 *   用于获取类的唯一实例，该方法首先判断instance是否为null，如果为null
 *   则创建一个对象，负责直接返回instance。
 *   
 *  两种方法的区别：第一中单类被加载时就创建一个实例；第二种getInstance第一次被调用时
 *  创建唯一的实例，但第二种方法实现单例模式时需要在getInstance方法的声明中使用
 *  synchronized关键字，保证某一时刻只有一个线程调用该方法。
 * 
 */
package com.hww.DesignPattern.Singleton;

/**
 * @author:Huangwenwei
 * @date:2014-6-18
 * @time:下午8:21:42
 */
public class SingletonA {
	private static int id = 1;
	private static SingletonA instance = new SingletonA();

	// 將構造方法私有，防止外界構造Singleton實例
	private SingletonA() {
	}

	public static SingletonA getInstance() {
		return instance;
	}

	public synchronized int getId() {
		return id;
	}

	public synchronized void nextID() {
		id++;
	}
}
